home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple WWDC 1996
/
WWDC96_1996 (CD).toast
/
Technology Materials
/
MacOS 8 Resources
/
Developer Tools
/
Mac OS 8 Interfaces & Libraries
/
Interfaces
/
CIncludes
/
PPCToolbox.h
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-01
|
20KB
|
554 lines
/*
File: PPCToolbox.h
Contains: Program-Program Communications Toolbox Interfaces.
Version: Technology: System 7.5
Release: Universal Interfaces 3.0d3 on Copland DR1
Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
Bugs?: If you find a problem with this file, send the file and version
information (from above) and the problem description to:
Internet: apple.bugs@applelink.apple.com
AppleLink: APPLE.BUGS
*/
#ifndef __PPCTOOLBOX__
#define __PPCTOOLBOX__
#ifndef __APPLETALK__
#include <AppleTalk.h>
#endif
#ifndef __MEMORY__
#include <Memory.h>
#endif
#ifndef __TYPES__
#include <Types.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if PRAGMA_IMPORT_SUPPORTED
#pragma import on
#endif
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=mac68k
#endif
#if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
typedef unsigned char PPCServiceType;
enum {
ppcServiceRealTime = 1
};
typedef short PPCLocationKind;
enum {
ppcNoLocation = 0, /* There is no PPCLocName */
ppcNBPLocation = 1, /* Use AppleTalk NBP */
ppcNBPTypeLocation = 2 /* Used for specifying a location name type during PPCOpen only */
};
typedef short PPCPortKinds;
enum {
ppcByCreatorAndType = 1, /* Port type is specified as colloquial Mac creator and type */
ppcByString = 2 /* Port type is in pascal string format */
};
/* Values returned for request field in PPCInform call */
typedef unsigned char PPCSessionOrigin;
enum {
/* Values returned for requestType field in PPCInform call */
ppcLocalOrigin = 1, /* session originated from this machine */
ppcRemoteOrigin = 2 /* session originated from remote machine */
};
typedef short PPCPortRefNum;
typedef long PPCSessRefNum;
struct PPCPortRec {
ScriptCode nameScript; /* script of name */
Str32Field name; /* name of port as seen in browser */
PPCPortKinds portKindSelector; /* which variant */
union {
Str32 portTypeStr; /* pascal type string */
struct {
OSType portCreator;
OSType portType;
} port;
} u;
};
typedef struct PPCPortRec PPCPortRec;
typedef PPCPortRec *PPCPortPtr;
struct LocationNameRec {
PPCLocationKind locationKindSelector; /* which variant */
union {
EntityName nbpEntity; /* NBP name entity */
Str32 nbpType; /* just the NBP type string, for PPCOpen */
} u;
};
typedef struct LocationNameRec LocationNameRec;
typedef LocationNameRec *LocationNamePtr;
struct PortInfoRec {
SInt8 filler1;
Boolean authRequired;
PPCPortRec name;
};
typedef struct PortInfoRec PortInfoRec;
typedef PortInfoRec *PortInfoPtr;
typedef PortInfoRec *PortInfoArrayPtr;
typedef union PPCParamBlockRec PPCParamBlockRec;
typedef PPCParamBlockRec *PPCParamBlockPtr;
typedef pascal void (*PPCCompProcPtr)(PPCParamBlockPtr pb);
#if GENERATINGCFM
typedef UniversalProcPtr PPCCompUPP;
#else
typedef PPCCompProcPtr PPCCompUPP;
#endif
#define PPCHeader \
Ptr qLink; /* PPC's Internal Use */\
unsigned short csCode; /* Requested PPC command */\
unsigned short intUse; /* Internal Use */\
Ptr intUsePtr; /* Internal Use */\
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */\
OSErr ioResult; /* 16 <-- Command Result Code */\
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
struct PPCOpenPBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
PPCPortRefNum portRefNum; /* 38 <-- Port Reference */
long filler1;
PPCServiceType serviceType; /* 44 --> Bit field describing the requested port service */
UInt8 resFlag; /* Must be set to 0 */
PPCPortPtr portName; /* 46 --> PortName for PPC */
LocationNamePtr locationName; /* 50 --> If NBP Registration is required */
Boolean networkVisible; /* 54 --> make this network visible on network */
Boolean nbpRegistered; /* 55 <-- The given location name was registered on the network */
};
typedef struct PPCOpenPBRec PPCOpenPBRec;
typedef PPCOpenPBRec *PPCOpenPBPtr;
struct PPCInformPBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
PPCPortRefNum portRefNum; /* 38 --> Port Identifier */
PPCSessRefNum sessRefNum; /* 40 <-- Session Reference */
PPCServiceType serviceType; /* 44 <-- Status Flags for type of session, local, remote */
Boolean autoAccept; /* 45 --> if true session will be accepted automatically */
PPCPortPtr portName; /* 46 --> Buffer for Source PPCPortRec */
LocationNamePtr locationName; /* 50 --> Buffer for Source LocationNameRec */
StringPtr userName; /* 54 --> Buffer for Soure user's name trying to link. */
unsigned long userData; /* 58 <-- value included in PPCStart's userData */
PPCSessionOrigin requestType; /* 62 <-- Local or Network */
SInt8 filler;
};
typedef struct PPCInformPBRec PPCInformPBRec;
typedef PPCInformPBRec *PPCInformPBPtr;
struct PPCStartPBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
PPCPortRefNum portRefNum; /* 38 --> Port Identifier */
PPCSessRefNum sessRefNum; /* 40 <-- Session Reference */
PPCServiceType serviceType; /* 44 <-- Actual service method (realTime) */
UInt8 resFlag; /* 45 --> Must be set to 0 */
PPCPortPtr portName; /* 46 --> Destination portName */
LocationNamePtr locationName; /* 50 --> NBP or NAS style service location name */
unsigned long rejectInfo; /* 54 <-- reason for rejecting the session request */
unsigned long userData; /* 58 --> Copied to destination PPCInform parameter block */
unsigned long userRefNum; /* 62 --> userRefNum (obtained during login process) */
};
typedef struct PPCStartPBRec PPCStartPBRec;
typedef PPCStartPBRec *PPCStartPBPtr;
struct PPCAcceptPBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
};
typedef struct PPCAcceptPBRec PPCAcceptPBRec;
typedef PPCAcceptPBRec *PPCAcceptPBPtr;
struct PPCRejectPBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
short filler2;
long filler3;
long filler4;
unsigned long rejectInfo; /* 54 --> reason for rejecting the session request */
};
typedef struct PPCRejectPBRec PPCRejectPBRec;
typedef PPCRejectPBRec *PPCRejectPBPtr;
struct PPCWritePBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
Size bufferLength; /* 44 --> Length of the message buffer */
Size actualLength; /* 48 <-- Actual Length Written */
Ptr bufferPtr; /* 52 --> Pointer to message buffer */
Boolean more; /* 56 --> if more data in this block will be written */
SInt8 filler2;
unsigned long userData; /* 58 --> Message block userData Uninterpreted by PPC */
OSType blockCreator; /* 62 --> Message block creator Uninterpreted by PPC */
OSType blockType; /* 66 --> Message block type Uninterpreted by PPC */
};
typedef struct PPCWritePBRec PPCWritePBRec;
typedef PPCWritePBRec *PPCWritePBPtr;
struct PPCReadPBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
Size bufferLength; /* 44 --> Length of the message buffer */
Size actualLength; /* 48 <-- Actual length read */
Ptr bufferPtr; /* 52 --> Pointer to message buffer */
Boolean more; /* 56 <-- if true more data in this block to be read */
SInt8 filler2;
unsigned long userData; /* 58 <-- Message block userData Uninterpreted by PPC */
OSType blockCreator; /* 62 <-- Message block creator Uninterpreted by PPC */
OSType blockType; /* 66 <-- Message block type Uninterpreted by PPC */
};
typedef struct PPCReadPBRec PPCReadPBRec;
typedef PPCReadPBRec *PPCReadPBPtr;
struct PPCEndPBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
};
typedef struct PPCEndPBRec PPCEndPBRec;
typedef PPCEndPBRec *PPCEndPBPtr;
struct PPCClosePBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
PPCPortRefNum portRefNum; /* 38 --> Port Identifier */
};
typedef struct PPCClosePBRec PPCClosePBRec;
typedef PPCClosePBRec *PPCClosePBPtr;
struct IPCListPortsPBRec {
Ptr qLink; /* PPC's Internal Use */
unsigned short csCode; /* Requested PPC command */
unsigned short intUse; /* Internal Use */
Ptr intUsePtr; /* Internal Use */
PPCCompUPP ioCompletion; /* 12 --> Completion Routine */
OSErr ioResult; /* 16 <-- Command Result Code */
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
short filler1;
unsigned short startIndex; /* 40 --> Start Index */
unsigned short requestCount; /* 42 --> Number of entries to be returned */
unsigned short actualCount; /* 44 <-- Actual Number of entries to be returned */
PPCPortPtr portName; /* 46 --> PortName Match */
LocationNamePtr locationName; /* 50 --> NBP or NAS type name to locate the Port Location */
PortInfoArrayPtr bufferPtr; /* 54 --> Pointer to a buffer requestCount*sizeof(PortInfo) bytes big */
};
typedef struct IPCListPortsPBRec IPCListPortsPBRec;
typedef IPCListPortsPBRec *IPCListPortsPBPtr;
union PPCParamBlockRec {
PPCOpenPBRec openParam;
PPCInformPBRec informParam;
PPCStartPBRec startParam;
PPCAcceptPBRec acceptParam;
PPCRejectPBRec rejectParam;
PPCWritePBRec writeParam;
PPCReadPBRec readParam;
PPCEndPBRec endParam;
PPCClosePBRec closeParam;
IPCListPortsPBRec listPortsParam;
};
/* PPC Calling Conventions */
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCInit
#endif
extern pascal OSErr PPCInit(void )
TWOWORDINLINE(0x7000, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCOpenSync(__A0)
#endif
extern pascal OSErr PPCOpenSync(PPCOpenPBPtr pb)
TWOWORDINLINE(0x7001, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCOpenAsync(__A0)
#endif
extern pascal OSErr PPCOpenAsync(PPCOpenPBPtr pb)
TWOWORDINLINE(0x7001, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCInformSync(__A0)
#endif
extern pascal OSErr PPCInformSync(PPCInformPBPtr pb)
TWOWORDINLINE(0x7003, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCInformAsync(__A0)
#endif
extern pascal OSErr PPCInformAsync(PPCInformPBPtr pb)
TWOWORDINLINE(0x7003, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCStartSync(__A0)
#endif
extern pascal OSErr PPCStartSync(PPCStartPBPtr pb)
TWOWORDINLINE(0x7002, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCStartAsync(__A0)
#endif
extern pascal OSErr PPCStartAsync(PPCStartPBPtr pb)
TWOWORDINLINE(0x7002, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCAcceptSync(__A0)
#endif
extern pascal OSErr PPCAcceptSync(PPCAcceptPBPtr pb)
TWOWORDINLINE(0x7004, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCAcceptAsync(__A0)
#endif
extern pascal OSErr PPCAcceptAsync(PPCAcceptPBPtr pb)
TWOWORDINLINE(0x7004, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCRejectSync(__A0)
#endif
extern pascal OSErr PPCRejectSync(PPCRejectPBPtr pb)
TWOWORDINLINE(0x7005, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCRejectAsync(__A0)
#endif
extern pascal OSErr PPCRejectAsync(PPCRejectPBPtr pb)
TWOWORDINLINE(0x7005, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCWriteSync(__A0)
#endif
extern pascal OSErr PPCWriteSync(PPCWritePBPtr pb)
TWOWORDINLINE(0x7006, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCWriteAsync(__A0)
#endif
extern pascal OSErr PPCWriteAsync(PPCWritePBPtr pb)
TWOWORDINLINE(0x7006, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCReadSync(__A0)
#endif
extern pascal OSErr PPCReadSync(PPCReadPBPtr pb)
TWOWORDINLINE(0x7007, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCReadAsync(__A0)
#endif
extern pascal OSErr PPCReadAsync(PPCReadPBPtr pb)
TWOWORDINLINE(0x7007, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCEndSync(__A0)
#endif
extern pascal OSErr PPCEndSync(PPCEndPBPtr pb)
TWOWORDINLINE(0x7008, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCEndAsync(__A0)
#endif
extern pascal OSErr PPCEndAsync(PPCEndPBPtr pb)
TWOWORDINLINE(0x7008, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCCloseSync(__A0)
#endif
extern pascal OSErr PPCCloseSync(PPCClosePBPtr pb)
TWOWORDINLINE(0x7009, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 PPCCloseAsync(__A0)
#endif
extern pascal OSErr PPCCloseAsync(PPCClosePBPtr pb)
TWOWORDINLINE(0x7009, 0xA4DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 IPCListPortsSync(__A0)
#endif
extern pascal OSErr IPCListPortsSync(IPCListPortsPBPtr pb)
TWOWORDINLINE(0x700A, 0xA0DD);
#if GENERATING68K && !GENERATINGCFM
#pragma parameter __D0 IPCListPortsAsync(__A0)
#endif
extern pascal OSErr IPCListPortsAsync(IPCListPortsPBPtr pb)
TWOWORDINLINE(0x700A, 0xA4DD);
extern pascal OSErr DeleteUserIdentity(unsigned long userRef);
extern pascal OSErr GetDefaultUser(unsigned long *userRef, Str32 userName);
extern pascal OSErr StartSecureSession(PPCStartPBPtr pb, Str32 userName, Boolean useDefault, Boolean allowGuest, Boolean *guestSelected, ConstStr255Param prompt);
typedef pascal Boolean (*PPCFilterProcPtr)(LocationNamePtr name, PortInfoPtr port);
#if GENERATINGCFM
typedef UniversalProcPtr PPCFilterUPP;
#else
typedef PPCFilterProcPtr PPCFilterUPP;
#endif
enum {
uppPPCCompProcInfo = kPascalStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(PPCParamBlockPtr))),
uppPPCFilterProcInfo = kPascalStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(LocationNamePtr)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(PortInfoPtr)))
};
#if GENERATINGCFM
#define NewPPCCompProc(userRoutine) \
(PPCCompUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPPCCompProcInfo, GetCurrentArchitecture())
#define NewPPCFilterProc(userRoutine) \
(PPCFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPPCFilterProcInfo, GetCurrentArchitecture())
#else
#define NewPPCCompProc(userRoutine) \
((PPCCompUPP) (userRoutine))
#define NewPPCFilterProc(userRoutine) \
((PPCFilterUPP) (userRoutine))
#endif
#if GENERATINGCFM
#define CallPPCCompProc(userRoutine, pb) \
CallUniversalProc((UniversalProcPtr)(userRoutine), uppPPCCompProcInfo, (pb))
#define CallPPCFilterProc(userRoutine, name, port) \
CallUniversalProc((UniversalProcPtr)(userRoutine), uppPPCFilterProcInfo, (name), (port))
#else
#define CallPPCCompProc(userRoutine, pb) \
(*(userRoutine))((pb))
#define CallPPCFilterProc(userRoutine, name, port) \
(*(userRoutine))((name), (port))
#endif
extern pascal OSErr PPCBrowser(ConstStr255Param prompt, ConstStr255Param applListLabel, Boolean defaultSpecified, LocationNameRec *theLocation, PortInfoRec *thePortInfo, PPCFilterUPP portFilter, ConstStr32Param theLocNBPType)
THREEWORDINLINE(0x303C, 0x0D00, 0xA82B);
#if OLDROUTINENAMES
/*
The ParamBlock calls with the "Sync" or "Async" suffix are being phased out.
*/
#define PPCOpen(pb, async) ((async) ? PPCOpenAsync(pb) : PPCOpenSync(pb))
#define PPCInform(pb, async) ((async) ? PPCInformAsync(pb) : PPCInformSync(pb))
#define PPCStart(pb, async) ((async) ? PPCStartAsync(pb) : PPCStartSync(pb))
#define PPCAccept(pb, async) ((async) ? PPCAcceptAsync(pb) : PPCAcceptSync(pb))
#define PPCReject(pb, async) ((async) ? PPCRejectAsync(pb) : PPCRejectSync(pb))
#define PPCWrite(pb, async) ((async) ? PPCWriteAsync(pb) : PPCWriteSync(pb))
#define PPCRead(pb, async) ((async) ? PPCReadAsync(pb) : PPCReadSync(pb))
#define PPCEnd(pb, async) ((async) ? PPCEndAsync(pb) : PPCEndSync(pb))
#define PPCClose(pb, async) ((async) ? PPCCloseAsync(pb) : PPCCloseSync(pb))
#define IPCListPorts(pb, async) ((async) ? IPCListPortsAsync(pb) : IPCListPortsSync(pb))
#endif
#endif
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=reset
#endif
#if PRAGMA_IMPORT_SUPPORTED
#pragma import off
#endif
#ifdef __cplusplus
}
#endif
#endif /* __PPCTOOLBOX__ */